/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.lcfgly.Interface;

import java.io.Serializable;
import java.util.Collection;
import java.util.Set;

/**
 * 缓存接口
 * @author lcfgly
 * @param <K>
 * @param <V>
 */
public interface ICache<K, V> extends Serializable {

    /**
     * 保存数据
     *
     * @param key
     * @param value
     * @return
     */
    public boolean save(K key, V value);

    /**
     * 保存有有效期的数据
     *
     * @param key
     * @param value
     * @param TTL 数据超时的秒数
     * @return
     */
    public boolean save(K key, V value, int TTL);

    /**
     * 获取缓存数据
     *
     * @param key
     * @return
     */
    public V get(K key);

    /**
     * 移出缓存数据
     *
     * @param key
     * @return
     */
    public boolean remove(K key);

    /**
     * 删除所有缓存内的数据
     *
     * @return
     */
    public boolean clear();
  
    /**
     * 替换缓存内容
     * @param key
     * @param value
     * @param TTL
     * @return 
     */
    public boolean replace(K key,V value,int TTL);
    
}
